package exception;

/**
 * 1:请分别描述final,finally,finalize?
 * finalize是Object定义的一个方法，java中所有的类都有这个方法
 * 特点:该方法是一个对象生命周期的最后一个方法
 * 当GC发现一个对象没有引用时就会释放该对象，释放前会调用该对象的finalize方法
 * 该方法调用后，对象被销毁。
 * 2:
 */
public class FinallyDemo3 {
    public static void main(String[] args) {
        System.out.println(test("0")+","+test(null)+","+test(""));
        //3,3,3
    }

    private static int test(String str) {
        try {
            return str.charAt(0) - '0';
        } catch (NullPointerException e) {
            return 1;
        } catch (Exception e) {
            return 2;
        }finally {
            //finally中通常不会写return，否则上面所有的return都会被这里取代
            return 3;
        }
    }
}
